The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Microprocessor based computing systems can implement a variety of currently available operating systems, for example, Linux, Windows, Android, iOS, and OS X among others. During the normal operation of an operating system, the microprocessor maintains a memory map to enable access to various peripherals connected to the processing circuitry, for example memory devices, input/output devices, etc. Peripheral buses may be used to interface peripheral devices to the computing system. Examples of these buses include the Universal Serial Bus (USB) and the Institute of Electrical and Electronic Engineers (IEEE) 1394 standard bus. These serial buses provide a simple method of attaching and accessing peripheral devices.
A USB-based computing system typically includes one or more USB clients (USB clients are also referred to interchangeably as “USB devices”, “USB client devices”, etc.), a USB host controller, and one or more hubs. Examples of USB devices are USB-compatible digital cameras, printers, keyboards, scanners, modems, mice, and digital phones. All USB devices attach directly to a USB host (or host controller) or via a USB hub, which provides one or more ports. USB makes plugging in new peripherals easy with plug-and-play capabilities, is much faster than a Personal System (PS)/2 connector or Recommended Standard (RS) 232 connector, allows automatic updating of the computing system's memory map, and supports multiple device connectivity. USB allows expandability of the capabilities of a computing system via an external port, eliminating the need for users or integrators to open the system chassis.
The advancement of computer chip technology has also resulted in the development of embedded processors and controllers and even embedded networks having multiple linked devices. An embedded processor or controller can be a processing circuitry, for example microprocessor or microcontroller circuitry, that has been integrated into an electronic device as opposed to being built as a standalone module or “plugin card.” Advancement of technology related to Programmable Logic Devices (PLD), for example Field-Programmable Gate Arrays (FPGA) has led to the development of FPGA-based system-on-chip (SOC) and network-on-chip (NOC) including FPGA-based embedded processor SOCs.
A SOC is a fully functional product having its electronic circuitry contained on a single chip. While a microprocessor chip requires ancillary hardware electronic components to process instructions, a SOC would include all required ancillary electronics. A simple example is a smartphone SOC that includes a processing circuitry like a microprocessor, encoder, decoder, digital signal processor (DSP), RAM, and ROM. Furthermore, processing circuitry in this context may also include PLDs. Many SOCs with processing circuitry and PLDs can also implement available operating systems. However, SOCs based on processing circuitry and PLDs lack USB-like plug-and-play capabilities. In fact, many of today's SOCs require rebooting the processing circuitry to update the memory map maintained by the processing circuitry after a reconfiguration of the PLD of the SOC.
Therefore, it would be desirable to be able to plug-and-play functionality for detecting device component reconfiguration and updating of memory maps in SOCs.